package br.cos.ufrj.bd3.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

@Entity
public class Noticia {
	
	public static long n;
	
	private long id;
	private Titulo titulo;
	private SubTitulo subTitulo;
	private List<Paragrafo> listaParagrafos;
	private List<Elemento> listaElementos;
	private List<Secao> listaSecoes;
	private String caderno;
	
	public Noticia() {
		listaParagrafos = new ArrayList<Paragrafo>();		
		listaElementos = new ArrayList<Elemento>();
		listaSecoes = new ArrayList<Secao>(); 
	}

	@Id
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	@OneToOne(cascade=CascadeType.ALL)
	public Titulo getTitulo() {
		return titulo;
	}

	public void setTitulo(Titulo titulo) {
		this.titulo = titulo;
	}

	@OneToOne(cascade=CascadeType.ALL)
	public SubTitulo getSubTitulo() {
		return subTitulo;
	}

	public void setSubTitulo(SubTitulo subTitulo) {
		this.subTitulo = subTitulo;
	}

	@OneToMany(cascade=CascadeType.ALL)
	public List<Paragrafo> getListaParagrafos() {
		return listaParagrafos;
	}
	
	public void setListaParagrafos(List<Paragrafo> listaParagrafos) {
		this.listaParagrafos = listaParagrafos;
	}

	@OneToMany(cascade=CascadeType.ALL)
	public List<Elemento> getListaElementos() {
		return listaElementos;
	}

	public void setListaElementos(List<Elemento> listaElementos) {
		this.listaElementos = listaElementos;
	}
	
	@ManyToMany(mappedBy="listaNoticias")
	public List<Secao> getListaSecoes() {
		return listaSecoes;
	}

	public void setListaSecoes(List<Secao> listaSecoes) {
		this.listaSecoes = listaSecoes;
	}

	@Override
	public String toString() {
		StringBuilder s = new StringBuilder();
		
		s.append("Caderno: " + getCaderno() + "\n");
		
		if(titulo != null) {
			s.append(titulo.getConteudo() + "\n");			
		}		
		
		for (Paragrafo p : listaParagrafos) {
			s.append(p.toString() + "\n");
		}
		
		return s.toString();
	}

	public String getCaderno() {
		return caderno;
	}

	public void setCaderno(String caderno) {
		this.caderno = caderno;
	}
}
